package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.JSONObjectPro;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.system.domain.request.reportstatistics.*;
import com.ruoyi.system.domain.vo.reportstatistics.*;

import java.util.List;

/**
 * 描述 统计报表Service
 * 作者 ZhangPing
 * 创建时间 2023/8/17 15:32
 */
public interface IReportStatisticsService {

    /**
     * 多媒体数据分页列表
     * @param param
     * @return
     */
    Page<Photo> photoList(ReportStatisticsListParam param);

    /**
     * 车辆里程统计
     * @param param
     * @return
     */
    Page<MileageStatistics> deviceMileageList(ReportStatisticsListParam param, boolean export);

    /**
     * 车辆里程统计汇总导出
     * @param param
     * @return
     */
    List<MileageStatistics> deviceMileageListSummaryExport(ReportStatisticsListParam param);

    /**
     * 车辆里程明细
     * @param param
     * @return
     */
    Page<MileageStatistics> deviceMileageDetailList(ReportStatisticsListParam param, boolean export);

    /**
     * 历史轨迹明细
     * @param param
     * @return
     */
    Page<Trajectory> trajectoryHistoryList(TrajectoryParam param, boolean export);

    /**
     * 车辆上线统计
     * @param param
     * @return
     */
    Page<DeviceOnline> deviceOnlineList(ReportStatisticsListParam param, boolean export);

    /**
     * 报警统计
     * @return
     */
    Page<AlarmStatistics> deviceAlarmList(DeviceAlarmListParam param, boolean export);

    /**
     * 报警明细
     * @param param
     * @return
     */
    Page<AlarmDetail> deviceAlarmDetailList(DeviceAlarmListParam param, boolean export);

    /**
     * 公司整点上线率
     * @param param
     * @return
     */
    Page<CompanyHourlyOnlineRate> companyHourlyOnlineRate(CompanyHourlyOnlineRateParam param, boolean export);

    /**
     * 公司整点上线率汇总导出
     * @param param
     * @return
     */
    List<CompanyHourlyOnlineRateSummary> companyHourlyOnlineRateSummaryExport(CompanyHourlyOnlineRateParam param);

    /**
     * 公司整点上线率详情
     * @param param
     * @return
     */
    List<CompanyHourlyOnlineDetail> companyHourlyOnlineDetail(CompanyHourlyOnlineDetailParam param);

    /**
     * 车辆状态统计列表
     * @param param
     * @return
     */
    Page<DeviceStatusStatistics> deviceStatusStatisticsList(StatusStatisticsListParam param, boolean export);

    /**
     * 人脸识别统计列表
     * @param param
     * @return
     */
    Page<PersonFaceResultStatistics> personFaceResultList(PersonFaceParam param, boolean export);

}
